﻿using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Core.Filters;
using Magicodes.ExporterAndImporter.Core.Models;
using Magicodes.ExporterAndImporter.Excel;
using RayD.Core;
using System;

namespace RayD.App.Magicodes
{
    /// <summary>
    /// 导出用户数据Dto
    /// </summary>
    /* 
        ExcelOutputType：输出类型
        AutoCenter：设置后可将整个表都进行居中
        HeaderRowIndex：表头位置
        TableStyle：表格样式风格
        Name： 名称(当前Sheet 名称)
        HeaderFontSize：头部字体大小
        FontSize：正文字体大小
        MaxRowNumberOnASheet：Sheet最大允许的行数，设置了之后将输出多个Sheet
        AutoFitAllColumn：bool 自适应所有列
        AutoFitMaxRows：数据超过此行之后不启用自适应，默认关闭
        Author：作者
        ExporterHeaderFilter：头部筛选器
        IsDisableAllFilter：是否禁用所有筛选器
    */
    [ExcelExporter(Name = "用户信息", TableStyle = OfficeOpenXml.Table.TableStyles.Light10, AutoFitAllColumn = true, MaxRowNumberOnASheet = 10000, AutoCenter = true)]
    public class ExportUserDto
    {
        /*
         DisplayName： 显示名称
         FontSize： 字体大小
         IsBold： 是否加粗
         Format： 格式化
         IsAutoFit： 是否自适应
         IsIgnore： 是否忽略
         AutoCenterColumn： 设置列居中
         Width：单元格宽度
        */
        /// <summary>
        /// 账户
        /// </summary>

        [ExporterHeader(DisplayName = "用户账号")]
        public string B_Account { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        [ExporterHeader(DisplayName = "用户名称")]
        public string B_RealName { get; set; }
        /// <summary>
        /// 用户性别（Enum不允许可空类型）
        /// </summary>
        [ExporterHeader(DisplayName = "用户性别")]
        public Gender B_Gender { get; set; }
        /// <summary>
        /// 用户状态
        /// </summary>
        [ExporterHeader(DisplayName = "用户状态")]
        public EnabledMark B_EnabledMark { get; set; }
        /// <summary>
        /// 创建日期
        /// </summary>
        [ExporterHeader(DisplayName = "创建日期", Format = "yyyy-MM-dd", Width = 25)]
        public DateTime? B_CreateDate { get; set; }
        /// <summary>
        /// 用户描述
        /// </summary>
        [ExporterHeader(DisplayName = "用户描述")]
        public string B_Description { get; set; }
    }



    public class ExporterStudentHeaderFilter : IExporterHeaderFilter
    {
        /// <summary>
        /// 表头筛选器（修改名称）
        /// </summary>
        /// <param name="exporterHeaderInfo"></param>
        /// <returns></returns>
        public ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo)
        {
            if (exporterHeaderInfo.DisplayName.Equals("编码"))
            {
                exporterHeaderInfo.ExporterHeaderAttribute.IsBold = true;
            }
            return exporterHeaderInfo;
        }
    }
}
